function    A206()
format long;

% 线性模型:	最小二乘法使标准差与方差成为分散性度量的基础，包括：最小二乘法拟合、线性回归分析、相关分析和方差分析等。

% 最小二乘法拟合
%x1 = -2: 0.2: 10;                                     % 定义输入值
%y1 = 5*sin(x1) + x1 - x1.^2 + 5*rand(1, 61);          % 定义输出值

% 生成随机的起始值和结束值，确保起始值小于结束值
startValue = rand*10;  % 随机生成一个0到10之间的数作为起始值
endValue = rand*10 + startValue;  % 随机生成一个比起始值大的数作为结束值
% 生成从startValue到endValue的61个等间隔的数字
x1 = linspace(startValue, endValue, 61);
% 打印生成的起始值、结束值和数组
disp(x1);
y1 = 5*sin(x1) + x1 - x1.^2 + 5*rand(1, 61);          % 定义输出值
coef1order = polyfit(x1, y1, 1);                      % 计算一次函数的系数
fit1y1 = polyval(coef1order, x1);                     % 用一次函数拟合曲线
coef2order = polyfit(x1, y1, 2);                      % 计算二次函数的系数  
fit2y1 = polyval(coef2order, x1);                     % 用二次函数拟合曲线
coef3order = polyfit(x1, y1, 3);                      % 计算三次函数的系数  
fit3y1 = polyval(coef3order, x1);                     % 用三次函数拟合曲线
coef4order = polyfit(x1, y1, 4);                      % 计算四次函数的系数  
fit4y1 = polyval(coef4order, x1);                     % 用四次函数拟合曲线
coef5order = polyfit(x1, y1, 5);                      % 计算五次函数的系数  
fit5y1 = polyval(coef5order, x1);                     % 用五次函数拟合曲线
% 最小二乘法的可视化
subplot(3, 1, 1)
plot(x1, y1, 'ko', x1, fit1y1, 'r-', x1, fit2y1, 'b-.', x1, fit3y1, 'g-', x1, fit4y1, 'm:', x1, fit5y1, 'c--');                                   % 原数据的分布图
legend('原数据', '一阶拟合曲线', '二阶拟合曲线', '三阶拟合曲线', '四阶拟合曲线', '五阶拟合曲线');

%  一元回归分析
%x2 = [1097 1284 1502 1394 1303 1555 1917 2051 2111 2286 2311 2003 2435 2625 2948 3055 3372];  % 自变量序列数据
%y2 = [698 872 988 807 738 1025 1316 1539 1561 1765 1762 1960 1902 2013 2446 2736 2825];       % 因变量序列数据
% 生成随机数组作为自变量 x2 和因变量 y2
x2 = randi([1000, 3500], 1, 17);  % 自变量序列数据，生成 1 行 17 个随机整数，范围为 [1000, 3500]
y2 = randi([600, 3000], 1, 17);   % 因变量序列数据，生成 1 行 17 个随机整数，范围为 [600, 3000]
disp(x2);
disp(y2);
X2 = [ones(size(x2')), x2'];
[b2, bint2, r2, rint2, stats2] = regress(y2', X2, 0.05);     % 调用一元回归分析函数
% 在置信度区间下误差分布的可视化
subplot(3, 1, 2);
rcoplot(r2, rint2);

% 相关性分析
%x3 = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10];
%y3 = [2; 5; 6; 7; 8; 9; 13; 18; 15; 20];
n = 10; % 数据点数
x3 = randn(n, 1); % 自变量：正态分布随机数
y3 = 2 * x3 + 0.5 * randn(n, 1); % 因变量：线性关系 + 噪声
% 输出 x3 和 y3 的值
disp('自变量 x3 的值:');
disp(x3);
disp('因变量 y3 的值:');
disp(y3);
Pearson_r = corr(x3, y3, 'type', 'pearson')          % Pearson相关
Kendall_r = corr(x3, y3, 'type', 'kendall')          % Kendall相关
Spearman_r = corr(x3, y3, 'type', 'spearman')        % Spearman相关
% 相关性分析的可视化
subplot(3, 1, 3);
plot(x3, y3, 'r*');
title(['Pearson相关', num2str(Pearson_r), '，Kendall相关', num2str(Kendall_r), '，Spearman相关', num2str(Spearman_r)])

% 方差分析
y = meshgrid(1: 6);
%rng default;                     % 可复用性
y = y + normrnd(0, 1, 6, 6)
p = anova1(y)

